#include "ThreadPool.hpp"
#include "Task.hpp"

#include <unistd.h>
#include <memory>
#include <unistd.h>

int main()
{
    //ThreadPool<CalTask>::getInstance()->run(); // 在创建对象的函数前面加上static就不会报错了

    std::unique_ptr<ThreadPool<CalTask>> tp(new ThreadPool<CalTask>()); // 模板的类型<>不能忘记！
    tp->run();
    int x, y;
    char op;
    while (true)
    {
        cout << "请输入数据1#";
        cin >> x;
        cout << "请输入数据2#";
        cin >> y;
        cout << "请输入运算方法3#";
        cin >> op;

        CalTask t(x, y, op, my_math);
        // cout << "你刚刚录入了一个任务： " << t.TaskToString() << " 确认提交吗?【y/n】#";
        // char c;
        // cin >> c;
        // if (c == 'y')
        tp->Push(t);

        //ThreadPool<CalTask>::getInstance()->Push();
        sleep(1);
    }
    return 0;
}

// #include "ThreadPool.hpp"///////////////测试代码
// #include "Thread.hpp"

// #include <unistd.h>

// pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
// void *run(void *args)
// {
//     std::string massage = static_cast<const char *>(args);
//     while (true)
//     {
//         pthread_mutex_lock(&mutex);
//         cout << massage << endl;
//         pthread_mutex_unlock(&mutex);
//         sleep(1);
//     }
// }
// int main()
// {
//     my_thread::Thread t1(run, (void *)"thread 1 run");
//     my_thread::Thread t2(run, (void *)"thread 2 run");

//     t1.start();
//     t2.start();

//     t1.join();
//     t2.join();
//     return 0;
// }
